package es.efor.ics.gev.dao;

import es.efor.ics.gev.model.Accion;
import es.efor.ics.gev.model.Cargo;
import es.efor.ics.gev.model.Concepto;
import es.efor.ics.gev.model.Departamento;
import es.efor.ics.gev.model.PerfilOrganizativo;
import es.efor.ics.gev.model.PerfilPersonal;
import es.efor.ics.gev.model.Role;
import es.efor.ics.gev.model.TipoAtributo;
import es.efor.ics.gev.model.TipoEvento;
import es.efor.ics.gev.model.TipoTitulacion;
import es.efor.ics.gev.model.Titulacion;

import java.util.List;

/**
 * Lookup Data Access Object (GenericDao) interface. This is used to lookup
 * values in the database (i.e. for drop-downs).
 * 
 * @author <a href="mailto:matt@raibledesigns.com">Matt Raible</a>
 */
public interface LookupDao {
	// ~ Methods
	// ================================================================

	/**
	 * Returns all Roles ordered by name
	 * 
	 * @return populated list of roles
	 */
	List<Role> getRoles();

	/**
	 * Returns all Departamentos ordered by name
	 * 
	 * @return populated list of departamentos
	 */
	List<Departamento> getDepartamentos();

	/**
	 * Returns all Acciones ordered by name
	 * 
	 * @return populated list of acciones
	 */
	List<Accion> getAcciones();

	/**
	 * Returns all TipoAtributo ordered by name
	 * 
	 * @return populated list of tipos atributo
	 */
	List<TipoAtributo> getTiposAtributo();

	/**
	 * Returns all TipoEvento ordered by name
	 * 
	 * @return populated list of tipologias
	 */
	List<TipoEvento> getTipologias();

	/**
	 * Returns all PerfilOrganizativo ordered by name
	 * 
	 * @return populated list of perfiles
	 */
	List<PerfilOrganizativo> getPerfilesOrganizativos();

	/**
	 * Returns all PerfilPersonal ordered by name
	 * 
	 * @return populated list of perfiles
	 */
	List<PerfilPersonal> getPerfilesPersonales();

	/**
	 * Returns all TipoTitulacion ordered by name
	 * 
	 * @return populated list of tipos titulaciones
	 */
	List<TipoTitulacion> getTiposTitulacion();

	/**
	 * Returns all Titulacion ordered by name
	 * 
	 * @return populated list of titulaciones
	 */
	List<Titulacion> getTitulaciones();

	/**
	 * Returns all Cargo ordered by name
	 * 
	 * @return populated list of cargos
	 */
	List<Cargo> getCargos();

	/**
	 * Returns all Concepto ordered by name
	 * 
	 * @return populated list of conceptos gasto
	 */
	List<Concepto> getConceptosGasto();

}
